package com.coolcard.framework.base;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 通用控制器基类
 * - 提供 CRUD 基本接口
 *
 * @param <E> 实体类
 * @param <R> 实体仓库类
 */
public abstract class BaseController<E, R extends JpaRepository<E, Long>> {

    private BaseService<E, R> service;  // 服务实例

    @Autowired
    public void setRepository(R repository) {
        this.service = new BaseService<>(repository);
    }

    // 获取数据列表
    @GetMapping("/list")
    public List<E> list() {
        return service.list();
    }

    // 获取单条数据
    @GetMapping("/{id}")
    public E get(@PathVariable("id") Long id) {
        return service.get(id);
    }

    // 新增数据
    @PostMapping("")
    public E create(E entity) {
        return service.create(entity);
    }

    // 更新数据
    @PutMapping("")
    public E update(E entity) {
        return service.update(entity);
    }

    // 删除数据
    @DeleteMapping("/{id}")
    public Integer delete(@PathVariable("id") Long id) {
        return service.delete(id);
    }
}
